//package com.ruoyi.common.utils.jwt;
//
//import io.jsonwebtoken.Jwts;
//import io.jsonwebtoken.SignatureAlgorithm;
//
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Component;
//
//import com.alibaba.fastjson2.JSONException;
//import com.alibaba.fastjson2.JSONObject;
//
//import java.text.SimpleDateFormat;
//import java.util.Calendar;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.Map;
//
//@Component
//public class JwtUtil {
//
//    // 令牌秘钥
//    @Value("${token.secret}")
//    private String SECRET;
//
//    // 令牌有效期（默认30分钟）
//    @Value("${token.expireTime}")
//    private Long EXPIRATION_TIME;
//
//    private final String TOKEN_PREFIX = "Bearer";
//    public static void main(String[] args) {
//    	LoginUserModel customClaims = new LoginUserModel();
//    	customClaims.setUserId("456");
//    	customClaims.setUserName("dds");
//    	 Map<String, Object> claims = new HashMap<String, Object>();
//         claims.put("userName", customClaims.getUserName());
//         claims.put("userId", 456);
//         claims.put("normalPermissions", customClaims.getNormalPermissions());
//         claims.put("permissions", customClaims.getPermissions());
//         claims.put("realName", customClaims.getRealName());
//         claims.put("role", customClaims.getRole());
//         Calendar c = Calendar.getInstance();
//         c.setTime(new Date());
//         c.add(Calendar.SECOND, 122);
//         Date d = c.getTime();
//         String jwt = Jwts.builder()
//                 .setClaims(claims)
//                 .setExpiration(d)
//                 .signWith(SignatureAlgorithm.HS512, "abcdefghijklmnopqrstuvwxyz")
//                 .compact();
//         JwtTokenResult json = new JwtTokenResult();
//         json.setAccess_token("tokens " + jwt);
//         json.setExpire_time(new SimpleDateFormat("yyyy-MM-dd HH:ss:mm").format(d));
//         json.setToken_type("tokens");
//         json.setLoginUser(customClaims);
//         System.out.println(JSONObject.toJSONString(json));
////         try {
////             Map<String, Object> body = Jwts.parser()
////                     .setSigningKey("abcdefghijklmnopqrstuvwxyz")
////                     .parseClaimsJws(json.getAccess_token().replace("tokens", ""))
////                     .getBody();
////             System.out.println(2);
////         } catch (Exception e) {
////        	 System.out.println(1);
////         }
////         try {
////             Map<String, Object> body = Jwts.parser()
////                     .setSigningKey("abcdefghijklmnopqrstuvwxyz")
////                     .parseClaimsJws(json.getAccess_token().replace("tokens", ""))
////                     .getBody();
////             LoginUserModel currentUser=new LoginUserModel();
////             currentUser.setUserId(body.get("userId").toString());
////             currentUser.setUserName(body.get("userName").toString());
////             System.out.println(JSONObject.toJSONString(currentUser));
////         } catch (Exception e) {
////        	 System.out.println(e.getMessage());
////         }
//    }
//     //创建token
//    public JwtTokenResult generateToken(LoginUserModel customClaims) throws JSONException {
//        Map<String, Object> claims = new HashMap<String, Object>();
//        claims.put("userName", customClaims.getUserName());
//        claims.put("userId", customClaims.getUserId());
//        claims.put("normalPermissions", customClaims.getNormalPermissions());
//        claims.put("permissions", customClaims.getPermissions());
//        claims.put("realName", customClaims.getRealName());
//        claims.put("role", customClaims.getRole());
//        Calendar c = Calendar.getInstance();
//        c.setTime(new Date());
//        c.add(Calendar.SECOND, EXPIRATION_TIME.intValue());
//        Date d = c.getTime();
//        String jwt = Jwts.builder()
//                .setClaims(claims)
//                .setExpiration(d)
//                .signWith(SignatureAlgorithm.HS512, SECRET)
//                .compact();
//        JwtTokenResult json = new JwtTokenResult();
//        json.setAccess_token(TOKEN_PREFIX + " " + jwt);
//        json.setExpire_time(new SimpleDateFormat("yyyy-MM-dd HH:ss:mm").format(d));
//        json.setToken_type(TOKEN_PREFIX);
//        json.setLoginUser(customClaims);
//        return json;
//    }
//
//    //验证token
//    public Boolean validateTokenAndGetClaims(String token) {
//        try {
//            if (StringUtils.isEmpty(token)) {
//                return false;
//            }
//            Map<String, Object> body = Jwts.parser()
//                    .setSigningKey(SECRET)
//                    .parseClaimsJws(token.replace(TOKEN_PREFIX, ""))
//                    .getBody();
//            return true;
//        } catch (Exception e) {
//            return false;
//        }
//    }
//
//    //根据token获取用户信息
//    public LoginUserModel getJwtTokenResult(String token) {
//        try {
//            if (StringUtils.isEmpty(token)) {
//                return null;
//            }
//            Map<String, Object> body = Jwts.parser()
//                    .setSigningKey(SECRET)
//                    .parseClaimsJws(token.replace(TOKEN_PREFIX, ""))
//                    .getBody();
//            LoginUserModel currentUser=new LoginUserModel();
//            currentUser.setUserId(body.get("userId").toString());
//            currentUser.setUserName(body.get("userName").toString());
//            return currentUser;
//        } catch (Exception e) {
//            return null;
//        }
//    }  
//}
